[IA64] vti fault handler clean up: introduce VMX_SAVE_MIN_WITH_COVER_NO_PANIC
authorAlex Williamson <alex.williamson@hp.com>
Fri, 14 Dec 2007 20:40:29 +0000 (13:40 -0700)
committerAlex Williamson <alex.williamson@hp.com>
Fri, 14 Dec 2007 20:40:29 +0000 (13:40 -0700)
For later use.  This is a version of VMX_SAVE_MIN_WITH_COVER which
doesn't call vmx_panic even when p6 is true.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/vmx/vmx_minstate.h

index 9706b03a646445c6f115cde5e58a9ffc2c6e00ea..c08cb2f45d434e14d8309e1a80cce9b52f65c150 100644 (file)
 (p6) movl out0=panic_string;            \
 (p6) br.call.spnt.few b6=panic;
 
-#define VMX_DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA)                                           \
+#define VMX_DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA,VMX_PANIC)                                 \
     mov r27=ar.rsc;                     /* M */                                         \
     mov r20=r1;                         /* A */                                         \
     mov r25=ar.unat;                    /* M */                                         \
     tbit.z p0,p15=r29,IA64_PSR_I_BIT;                                                   \
     ;;                                                                                  \
 (pUStk) tbit.nz.and p6,p0=r18,IA64_ISR_NI_BIT;                                          \
-    ;;                                                                                  \
-    P6_BR_VMX_PANIC                                                                     \
 (pUStk)VMX_MINSTATE_GET_CURRENT(r1);                                                    \
-    /*    mov r21=r16;  */                                                              \
+    VMX_PANIC                                                                           \
     /* switch from user to kernel RBS: */                                               \
     ;;                                                                                  \
     invala;                             /* M */                                         \
     ;;                                  \
     st8 [r2]=r26;       /* eml_unat */
 
-#define VMX_SAVE_MIN_WITH_COVER     VMX_DO_SAVE_MIN(cover, mov r30=cr.ifs,)
-#define VMX_SAVE_MIN_WITH_COVER_R19 VMX_DO_SAVE_MIN(cover, mov r30=cr.ifs, mov r15=r19)
-#define VMX_SAVE_MIN                VMX_DO_SAVE_MIN(     , mov r30=r0, )
+#define VMX_SAVE_MIN_WITH_COVER     VMX_DO_SAVE_MIN(cover, mov r30=cr.ifs,, P6_BR_VMX_PANIC)
+#define VMX_SAVE_MIN_WITH_COVER_NO_PANIC    \
+                                    VMX_DO_SAVE_MIN(cover, mov r30=cr.ifs,, )
+#define VMX_SAVE_MIN_WITH_COVER_R19 VMX_DO_SAVE_MIN(cover, mov r30=cr.ifs, mov r15=r19, P6_BR_VMX_PANIC)
+#define VMX_SAVE_MIN                VMX_DO_SAVE_MIN(     , mov r30=r0,, P6_BR_VMX_PANIC)
 
 /*
  * Local variables: